1957D - A BIT of an Inequality - CodeForces Solution


bitmasks brute force dp math

Please click on ads to support us..

Python Code:

for _ in range(int(input())):
    n = int(input())
    a = [*map(int, input().split())]
    dp0 = [1] * 31
    dp1 = [0] * 31
    pre0 = [0] * 31
    pre1 = [0] * 31
    ans = res = 0
    for v in a:
        m = v.bit_length() - 1
        pre0[m] += dp0[m]
        pre1[m] += dp1[m]
        res ^= v
        for i in range(31):
            if res & (1 << i):
                dp1[i] += 1
                ans += pre1[i]
            else:
                dp0[i] += 1
                ans += pre0[i]
    print(ans)


Comments

Submit
0 Comments
More Questions

1358D - The Best Vacation
1620B - Triangles on a Rectangle
999C - Alphabetic Removals
1634C - OKEA
1368C - Even Picture
1505F - Math
1473A - Replacing Elements
959A - Mahmoud and Ehab and the even-odd game
78B - Easter Eggs
1455B - Jumps
1225C - p-binary
1525D - Armchairs
1257A - Two Rival Students
1415A - Prison Break
1271A - Suits
259B - Little Elephant and Magic Square
1389A - LCM Problem
778A - String Game
1382A - Common Subsequence
1512D - Corrupted Array
667B - Coat of Anticubism
284B - Cows and Poker Game
1666D - Deletive Editing
1433D - Districts Connection
2B - The least round way
1324A - Yet Another Tetris Problem
246B - Increase and Decrease
22E - Scheme
1566A - Median Maximization
1278A - Shuffle Hashing